package leetcode;

/*
给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和。
 */
public class Test415字符串相加 {

    /*
      1 2 3        8 9 4 8
    + 9 5 7      +     7 5
    --------     ----------

    以下参考答案适用于：字符串加法、链表加法以及二进制加法之类的都可以这么写
     */
    public String addStrings(String num1, String num2) {
        if (num1.equals("") || num2.equals(""))
            return "";
        if (num1.equals("0"))
            return num2;
        if (num2.equals("0"))
            return num1;
        StringBuilder sb = new StringBuilder();
        int carry = 0;
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        while (i >= 0 || j >= 0 || carry != 0) {
            if (i >= 0)
                carry += num1.charAt(i--) - '0';
            if (j >= 0)
                carry += num2.charAt(j--) - '0';
            sb.append(carry % 10);
            carry /= 10;
        }
        return sb.reverse().toString();
    }
}
